package controlador;

import java.rmi.Naming;
import java.rmi.RemoteException;
import java.util.Date;
import java.util.List;

import dto.Administracion.DTO_Destino;
import dto.Administracion.DTO_DestinoInternacional;
import dto.Administracion.DTO_DestinoNacional;
import dto.Administracion.DTO_Empleado;
import dto.Administracion.DTO_Rol;
import dto.Administracion.DTO_Stock;
import dto.Administracion.DTO_Sucursal;
import dto.Administracion.DTO_Usuario;
import dto.Cliente.DTO_Cliente;
import dto.Cliente.DTO_CuentaCorriente;
import dto.Cliente.DTO_DireccionEntrega;
import dto.Cliente.DTO_FacturaCliente;
import dto.Cliente.DTO_ProductoCliente;
import dto.Cliente.DTO_ReciboPago;
import dto.Proveedor.DTO_FacturaProveedor;
import dto.Proveedor.DTO_PrecioCarrier;
import dto.Proveedor.DTO_Proveedor;
import dto.Proveedor.DTO_Seguro;
import dto.Proveedor.DTO_ServicioSeguridad;
import dto.Vehiculo.DTO_PlanMantenimiento;
import dto.Vehiculo.DTO_TareaMantenimiento;
import dto.Vehiculo.DTO_TareaMantenimientoRealizada;
import dto.Vehiculo.DTO_TareasPorKilometro;
import dto.Vehiculo.DTO_TareasPorTiempo;
import dto.Vehiculo.DTO_Vehiculo;
import interfaces.InterfazRemotaAdministracion;

public class controladorAdmin {
	
	// Interfaz Remota que esta en el Repositorio
	InterfazRemotaAdministracion objetoRemoto;
	private static controladorAdmin instancia;
	
	private controladorAdmin() {
		try {
            // Establezco el lugar a donde el cliente va a hacer el lookup para
            // conectarse con el server
            objetoRemoto = (InterfazRemotaAdministracion) Naming
                            .lookup(InterfazRemotaAdministracion.url);
            System.out.println("Obtenido el servicio de la Instancia Remota "
                            + InterfazRemotaAdministracion.url);
		} catch (Exception e) {
            e.printStackTrace();
    	}
	}
	
	public static controladorAdmin getInstancia() {
        if (instancia == null)
                instancia = new controladorAdmin();
        return instancia;
	}
	
	/**************************************************************************************************************************/
	/**Administracion**/
	/**************************************************************************************************************************/
	//Empleados
	 public boolean altaEmpleado(String nombre, String apellido, Date fechaIngreso, DTO_Sucursal sucursal, DTO_Empleado superior) {
         try {
        	 
        	 DTO_Empleado empleado = new DTO_Empleado();
        	 empleado.setNombre(nombre);
        	 empleado.setApellido(apellido);
        	 empleado.setFechaIngreso(fechaIngreso);
        	 empleado.setIdSucursal(sucursal.getId());
        	 empleado.setIdSuperior(superior.getId());

        	 objetoRemoto.altaEmpleado(empleado);
        	 return true;
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Alta Empleado");
         }   
         return false;
	 }
	 public boolean modificarEmpleado(Integer id, String nombre, String apellido, Date fechaIngreso, DTO_Sucursal sucursal, DTO_Empleado superior) {
         try {
        	 
        	 DTO_Empleado empleado = new DTO_Empleado();
        	 empleado.setId(id);
        	 empleado.setNombre(nombre);
        	 empleado.setApellido(apellido);
        	 empleado.setFechaIngreso(fechaIngreso);
        	 empleado.setIdSucursal(sucursal.getId());
        	 empleado.setIdSuperior(superior.getId());

        	 objetoRemoto.modificarEmpleado(empleado);
        	 return true;
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Modificar Empleado");
         }   
         return false;
	 }
	 public boolean bajaEmpleado(Integer id) {
         try {        	 
        	 objetoRemoto.bajaEmpleado(id);
        	 return true;
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Baja Empleado");
         }   
         return false;
	 }
	 public DTO_Empleado getEmpleado(Integer id){
		 DTO_Empleado empleado = null;
		 try {
			 empleado = objetoRemoto.getEmpleado(id);
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Alta Empleado");
         }  
		 return empleado;
	 }
	 
	//Sucursal
	 public boolean altaSucursal(String descripcion, String direccion, String provincia, String localidad, String codigoPostal, String telefono, float costoLocal, DTO_Empleado gerente, DTO_Empleado encargadoDeposito, DTO_Empleado recepcionPedidos) {
         try {
        	 
        	 DTO_Sucursal sucursal = new DTO_Sucursal();
        	 sucursal.setDescripcion(descripcion);
        	 sucursal.setDireccion(direccion);
        	 sucursal.setProvincia(provincia);
        	 sucursal.setLocalidad(localidad);
        	 sucursal.setCodigoPostal(codigoPostal);
        	 sucursal.setTelefono(telefono);
        	 sucursal.setCostoLocal(costoLocal);
        	 sucursal.setIdGerente(gerente.getId());
        	 sucursal.setIdEncargadoDeposito(encargadoDeposito.getId());
        	 sucursal.setIdRecepcionPedidos(recepcionPedidos.getId());
        	 objetoRemoto.altaSucursal(sucursal);
        	 return true;
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Alta Sucursal");
         }   
         return false;
	 }
	 public boolean modificarSucursal(Integer id, String descripcion, String direccion, String provincia, String localidad, String codigoPostal, String telefono, float costoLocal, DTO_Empleado gerente, DTO_Empleado encargadoDeposito, DTO_Empleado recepcionPedidos) {
         try {
        	 
        	 DTO_Sucursal sucursal = new DTO_Sucursal();
        	 sucursal.setId(id);
        	 sucursal.setDescripcion(descripcion);
        	 sucursal.setDireccion(direccion);
        	 sucursal.setProvincia(provincia);
        	 sucursal.setLocalidad(localidad);
        	 sucursal.setCodigoPostal(codigoPostal);
        	 sucursal.setTelefono(telefono);
        	 sucursal.setCostoLocal(costoLocal);
        	 sucursal.setIdGerente(gerente.getId());
        	 sucursal.setIdEncargadoDeposito(encargadoDeposito.getId());
        	 sucursal.setIdRecepcionPedidos(recepcionPedidos.getId());
        	 objetoRemoto.modificarSucursal(sucursal);
        	 return true;
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Modificar Sucursal");
         }   
         return false;
	 }
	 public boolean bajaSucursal(Integer id) {
         try {        	 
        	 objetoRemoto.bajaSucursal(id);
        	 return true;
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Baja Sucursal");
         }   
         return false;
	 }
	 public DTO_Sucursal getSucursal(Integer id){
		 DTO_Sucursal s = null;
		 try {
			 s = objetoRemoto.getSucursal(id);
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Alta Empleado");
         }  
		 return s;
	 }
	//Sucursal
	 public boolean altaStock(String descripcion, Integer idSucursal) {
		 try {
			 DTO_Stock stock = new DTO_Stock();
			 stock.setDescripcion(descripcion);
			 stock.setIdSucursal(idSucursal);
			 objetoRemoto.altaStock(stock);
			 return true;
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Alta Stock");
		 }   
		 return false;
	 }	 
	 public boolean modificarStock(Integer id, String descripcion, Integer idSucursal) {
		 try {
			 DTO_Stock stock = new DTO_Stock();
			 stock.setId(id);
			 stock.setDescripcion(descripcion);
			 stock.setIdSucursal(idSucursal);
			 objetoRemoto.modificarStock(stock);
			 return true;
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Modificar Stock");
		 }   
		 return false;
	 }	
	 public boolean bajaStock(Integer id) {
         try {        	 
        	 objetoRemoto.bajaStock(id);
        	 return true;
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Baja Stock");
         }   
         return false;
	 }
	 public DTO_Stock getStock(Integer id){
		 DTO_Stock s = null;
		 try {
			 s = objetoRemoto.getStock(id);
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Get stock");
         }  
		 return s;
	 }
	 
	//Destino
	 public boolean altaDestinoNacional(Integer idSucursalOrigen, String ciudad, float distanciaKM, float costoFijo, float diasViaje, float ganancia, float costoKMExtra, String provincia, Integer idSucursalProxima, String camino){
		 try {
			 DTO_Destino destino = new DTO_DestinoNacional();
			 destino.setIdSucursalOrigen(idSucursalOrigen);
			 destino.setCiudad(ciudad);
			 destino.setDistanciaKM(distanciaKM);
			 destino.setCostoFijo(costoFijo);
			 destino.setDiasViaje(diasViaje);
			 destino.setGanancia(ganancia);
			 destino.setCostoKMExtra(costoKMExtra);
			 ((DTO_DestinoNacional) destino).setProvincia(provincia);
			 ((DTO_DestinoNacional) destino).setIdSucursalProxima(idSucursalProxima);
			 ((DTO_DestinoNacional) destino).setCamino(camino);
			 objetoRemoto.altaDestino(destino);
        	 return true;
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Alta Destino Nacional");
         }   
         return false;
	 }
	 public boolean modificarDestinoNacional(Integer id, Integer idSucursalOrigen, String ciudad, float distanciaKM, float costoFijo, float diasViaje, float ganancia, float costoKMExtra, String provincia, Integer idSucursalProxima, String camino){
		 try {
			 DTO_Destino destino = new DTO_DestinoNacional();
			 destino.setId(id);
			 destino.setIdSucursalOrigen(idSucursalOrigen);
			 destino.setCiudad(ciudad);
			 destino.setDistanciaKM(distanciaKM);
			 destino.setCostoFijo(costoFijo);
			 destino.setDiasViaje(diasViaje);
			 destino.setGanancia(ganancia);
			 destino.setCostoKMExtra(costoKMExtra);
			 ((DTO_DestinoNacional) destino).setProvincia(provincia);
			 ((DTO_DestinoNacional) destino).setIdSucursalProxima(idSucursalProxima);
			 ((DTO_DestinoNacional) destino).setCamino(camino);
			 objetoRemoto.modificarDestino(destino);
        	 return true;
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Modificar Destino Nacional");
         }   
         return false;
	 }
	 public boolean bajaDestinoNacional(Integer id) {
         try {        	 
        	 objetoRemoto.bajaDestino(id);
        	 return true;
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Baja Destino Nacional");
         }   
         return false;
	 }
	 public DTO_Destino getDestinoNacional(Integer id){
		 DTO_Destino d = null;
		 try {
			 d = objetoRemoto.getDestinoNacional(id);
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Get Destino");
         }  
		 return d;
	 }
	 public boolean altaDestinoInternacional(Integer idSucursalOrigen, String ciudad, float distanciaKM, float costoFijo, float diasViaje, float ganancia, float costoKMExtra, String pais){
		 try {
			 DTO_Destino destino = new DTO_DestinoInternacional();
			 destino.setIdSucursalOrigen(idSucursalOrigen);
			 destino.setCiudad(ciudad);
			 destino.setDistanciaKM(distanciaKM);
			 destino.setCostoFijo(costoFijo);
			 destino.setDiasViaje(diasViaje);
			 destino.setGanancia(ganancia);
			 destino.setCostoKMExtra(costoKMExtra);
			 ((DTO_DestinoInternacional) destino).setPais(pais);
			 objetoRemoto.altaDestino(destino);
        	 return true;
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Alta Destino Internacional");
         }   
         return false;
	 }

	 public boolean modificarDestinoInternacional(Integer id, Integer idSucursalOrigen, String ciudad, float distanciaKM, float costoFijo, float diasViaje, float ganancia, float costoKMExtra, String pais){
		 try {
			 DTO_Destino destino = new DTO_DestinoInternacional();
			 destino.setId(id);
			 destino.setIdSucursalOrigen(idSucursalOrigen);
			 destino.setCiudad(ciudad);
			 destino.setDistanciaKM(distanciaKM);
			 destino.setCostoFijo(costoFijo);
			 destino.setDiasViaje(diasViaje);
			 destino.setGanancia(ganancia);
			 destino.setCostoKMExtra(costoKMExtra);
			 ((DTO_DestinoInternacional) destino).setPais(pais);
			 objetoRemoto.altaDestino(destino);
        	 return true;
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Modificar Destino Internacional");
         }   
         return false;
	 }
	 public boolean bajaDestinoInteracional(Integer id) {
         try {        	 
        	 objetoRemoto.bajaDestino(id);
        	 return true;
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Baja Destino Internacional");
         }   
         return false;
	 }
	 public DTO_Destino getDestinoInternacional(Integer id){
		 DTO_Destino d = null;
		 try {
			 d = objetoRemoto.getDestinoNacional(id);
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Get Destino");
         }  
		 return d;
	 }
	 //Usuario
	 public boolean altaUsuario(String usuario, String password, DTO_Empleado empleado, List<DTO_Rol> roles){
		 try {
		    	DTO_Usuario u = new DTO_Usuario();
		    	u.setUsuario(usuario);
		    	u.setPassword(password);
		    	u.setFechaCreacion(new Date());
		    	u.setIdEmpleado(empleado.getId());
		    	u.setRoles(roles);
				objetoRemoto.altaUsuario(u);
				return true;
	       } catch (RemoteException e) {
	      	 System.out.println(e);
	           System.out.println("Error validar usuario");
	     }  
		return false;
	}
	 public boolean bajaUsuario(String usuario) {
         try {        	 
        	 objetoRemoto.bajaUsuario(usuario);
        	 return true;
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Baja usuario");
         }   
         return false;
	 }
	 public boolean cambiarPassword(String usuario, String oldPassword,	String newPassword){
		 try {
			 objetoRemoto.cambiarPassword(usuario, oldPassword, newPassword); 
			 return true;
		 } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Cambiar password");
         }
		 return false;
	}
	//Login
	public DTO_Usuario validarUsuario(String usuario, String password){
		try {
			 return objetoRemoto.validarUsuario(usuario, password);
       } catch (RemoteException e) {
      	 System.out.println(e);
           System.out.println("Error validar usuario");
       }  
		 return null;
	}
	public void ingresoUsuario(String usuario){
		 try {
			 objetoRemoto.ingresoUsuario(usuario); 
		 } catch (RemoteException e) {
       	 System.out.println(e);
            System.out.println("Error Alta Ingreso Usuario");
        }
	 }
	//Listados
	public String[]  listarPaises(){
		try {
			 String listaPaises[] = objetoRemoto.listarPaises();
			 return listaPaises;
        } catch (RemoteException e) {
       	 System.out.println(e);
            System.out.println("Error Listar Pais");
        }  
		 return null;
	 }
	 
	 public String[]  listarProvincias(String pais){
		try {
			 String listaPaises[] = objetoRemoto.listarProvincias(pais);
			 return listaPaises;
        } catch (RemoteException e) {
       	 System.out.println(e);
            System.out.println("Error Listar Provincias");
        }  
		 return null;
	 }
	 public List<DTO_Rol> listarRoles(){
		 List<DTO_Rol> lista = null;
		 try {
			 lista = objetoRemoto.listarRoles();
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Listar Roles");
         }  
		 return lista;
	 }
	 public List<DTO_Rol> buscarRolesUsuario(String usuario){
		 try {
        	 return objetoRemoto.buscarRolesUsuario(usuario);
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Buscar Roles Usuario");
         }   
         return null;
	 }
	 public List<DTO_Empleado> listarEmpleados() {
		 List<DTO_Empleado> empleados = null;
		 try {
			 empleados = objetoRemoto.listarEmpleados();
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Listar empleados");
		 }  
		 return empleados;
	 }
	 public List<DTO_Empleado> listarEmpleados(Integer idSucursal) {
		 List<DTO_Empleado> empleados = null;
		 try {
			 empleados = objetoRemoto.listarEmpleados(idSucursal);
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Listar empleados sucursal");
		 }  
		 return empleados;
	 }
	 public List<DTO_Sucursal> listarSucursales() {
		 List<DTO_Sucursal> sucursales = null;
		 try {
			 sucursales = objetoRemoto.listarSucursales();
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Listar sucursales");
		 }  
		 return sucursales;
	 }
	 public List<DTO_Stock> listarStock() {
		 List<DTO_Stock> stocks = null;
		 try {
			 stocks = objetoRemoto.listarStock();
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Listar stocks");
		 }  
		 return stocks;
	 }
	 public List<DTO_Stock> listarStock(Integer idSucursal){
		 List<DTO_Stock> stocks = null;
		 try {
			 stocks = objetoRemoto.listarStock(idSucursal);
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Listar stocks");
		 }  
		 return stocks;
	 }
	 public List<DTO_Destino> listarDestinoNacional() {
		 List<DTO_Destino> destinos = null;
		 try {
			 destinos = objetoRemoto.listarDestinoNacional();
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Listar destinos nacionales");
		 }  
		 return destinos;
	 }
	 public List<DTO_Destino> listarDestinoNacional(Integer idSucursal) {
		 List<DTO_Destino> destinos = null;
		 try {
			 destinos = objetoRemoto.listarDestinoNacional(idSucursal);
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Listar destinos nacionales");
		 }  
		 return destinos;
	 }
	 public List<DTO_Destino> listarDestinoInternacional() {
		 List<DTO_Destino> destinos = null;
		 try {
			 destinos = objetoRemoto.listarDestinoInternacional();
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Listar destinos internacional");
		 }  
		 return destinos;
	 }
	 public List<DTO_Destino> listarDestinoInternacional(Integer idSucursal) {
		 List<DTO_Destino> destinos = null;
		 try {
			 destinos = objetoRemoto.listarDestinoInternacional(idSucursal);
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Listar destinos internacional");
		 }  
		 return destinos;
	 }
	 public List<DTO_Usuario> listarUsuarios() {
		 List<DTO_Usuario> usuarios = null;
		 try {
			 usuarios = objetoRemoto.listarUsuarios();
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Listar usuarios");
		 }  
		 return usuarios;
	 }
	/**************************************************************************************************************************/
	/**Clientes */
	/**************************************************************************************************************************/
	//Cliente
	 public boolean altaCliente(String razonSocial, String cuit, boolean estado, String direccion, String codigoPostal, String localidad, String provincia, String pais, String email, String telefono, float limiteCredito, String formaPago) {
		 try {
			 DTO_Cliente cliente = new DTO_Cliente();
			 cliente.setRazonSocial(razonSocial);
			 cliente.setCuit(cuit);
			 cliente.setEstado(estado);
			 cliente.setDireccion(direccion);
			 cliente.setCodigoPostal(codigoPostal);
			 cliente.setLocalidad(localidad);
			 cliente.setProvincia(provincia);
			 cliente.setPais(pais);
			 cliente.setEmail(email);
			 cliente.setTelefono(telefono);
			
			 DTO_CuentaCorriente cc = new DTO_CuentaCorriente();
			 cc.setLimiteCredito(limiteCredito);
			 cc.setCredito(limiteCredito);
			 cc.setFormaPago(formaPago);
			 
			 cliente.setCuentaCorriente(cc);
			 
			 objetoRemoto.altaCliente(cliente);
			 return true;
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Alta Cliente");
		 }   
		 return false;
	 }
	 public boolean modificarCliente(Integer id, String razonSocial, String cuit, boolean estado, String direccion, String codigoPostal, String localidad, String provincia, String pais, String email, String telefono, Integer idCuentaCorriente) {
		 try {
			 DTO_Cliente cliente = new DTO_Cliente();
			 cliente.setId(id);
			 cliente.setRazonSocial(razonSocial);
			 cliente.setCuit(cuit);
			 cliente.setEstado(estado);
			 cliente.setDireccion(direccion);
			 cliente.setCodigoPostal(codigoPostal);
			 cliente.setLocalidad(localidad);
			 cliente.setProvincia(provincia);
			 cliente.setPais(pais);
			 cliente.setEmail(email);
			 cliente.setTelefono(telefono);
			
			 
			 

			 objetoRemoto.modificarCliente(cliente);
			 return true;
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Modificar Cliente");
		 }   
		 return false;
	 }
	 public boolean bajaCliente(Integer id) {
         try {        	 
        	 objetoRemoto.bajaCliente(id);
        	 return true;
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Baja Cliente");
         }   
         return false;
	 }
	 public DTO_Cliente getCliente(Integer id){
		 DTO_Cliente c = null;
		 try {
			 c = objetoRemoto.getCliente(id);
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Get Cliente");
         }  
		 return c;
	 }
	 
	 //Cuenta Corriente
	 public boolean actualizarCuentaCorriente(Integer id, float credito, float limiteCredito, String formaPago) {
		 try {
			 DTO_CuentaCorriente cc = new DTO_CuentaCorriente();
			 cc.setId(id);
			 cc.setCredito(credito);
			 cc.setLimiteCredito(limiteCredito);
			 cc.setFormaPago(formaPago);

			 objetoRemoto.actualizarCuentaCorriente(cc);
			 return true;
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Actualizar Cuenta Corriente");
		 }   
		 return false;

	 }
	 
	 //Factura Cliente
	 public DTO_FacturaCliente getFacturaCliente(Integer id){
		 DTO_FacturaCliente f = null;
		 try {
			 f = objetoRemoto.getFacturaCliente(id);
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Get Factura Cliente");
         }  
		 return f;
	 }
	 public DTO_ReciboPago getReciboPago(Integer id){
		 DTO_ReciboPago r = null;
		 try {
			 r = objetoRemoto.getReciboPago(id);
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Get Recibo Pago");
         }  
		 return r;
	 }
	 //Direccion Entrega
	 public boolean altaDireccionEntrega(String direccion, String codigoPostal, String localidad, String provincia, String pais, String horarioEntrega, String diasEntrega, Integer idCliente){
		 try {
			DTO_DireccionEntrega d = new DTO_DireccionEntrega();
			d.setDireccion(direccion);
			d.setCodigoPostal(codigoPostal);
			d.setLocalidad(localidad);
			d.setProvincia(provincia);
			d.setPais(pais);
			d.setHorarioEntrega(horarioEntrega);
			d.setDiasEntrega(diasEntrega);
			d.setIdCliente(idCliente);
			objetoRemoto.altaDireccionEntrega(d);
			return true;
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Alta Direccion Entrega");
		 }   
		 return false; 
	 }
	 public boolean modificarDireccionEntrega(Integer id, int posicion, String direccion, String codigoPostal, String localidad, String provincia, String pais, String horarioEntrega, String diasEntrega, Integer idCliente){
		 try {
			DTO_DireccionEntrega d = new DTO_DireccionEntrega();
			d.setId(id);
			d.setPosicion(posicion);
			d.setDireccion(direccion);
			d.setCodigoPostal(codigoPostal);
			d.setLocalidad(localidad);
			d.setProvincia(provincia);
			d.setPais(pais);
			d.setHorarioEntrega(horarioEntrega);
			d.setDiasEntrega(diasEntrega);
			d.setIdCliente(idCliente);
			objetoRemoto.modificarDireccionEntrega(d);
			return true;
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Alta Direccion Entrega");
		 }   
		 return false; 
	 }
	 public boolean bajaDireccionEntrega(Integer id) {
         try {        	 
        	 objetoRemoto.bajaDireccionEntrega(id);
        	 return true;
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Baja Direccion Entrega");
         }   
         return false;
	 }
	 public DTO_DireccionEntrega getDireccionEntrega(Integer id){
		 DTO_DireccionEntrega d = null;
		 try {
			 d = objetoRemoto.getDireccionEntrega(id);
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Get Direccion Entrega");
         }  
		 return d;
	 }
	 //Producto Cliente
	 public boolean altaProductoCliente(String codigo, String descripcion, String categoria, String unidad, Integer idCliente){
		 try {
			DTO_ProductoCliente pc = new DTO_ProductoCliente();
			pc.setCodigo(codigo);
			pc.setDescripcion(descripcion);
			pc.setCategoria(categoria);
			pc.setUnidad(unidad);
			pc.setIdCliente(idCliente);
			objetoRemoto.altaProductoCliente(pc);
			return true;
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Alta Producto Cliente");
		 }   
		 return false; 
	 }
	 public boolean modificarProductoCliente(Integer id, String codigo, String descripcion, String categoria, String unidad, Integer idCliente){
		 try {
			DTO_ProductoCliente pc = new DTO_ProductoCliente();
			pc.setId(id);
			pc.setCodigo(codigo);
			pc.setDescripcion(descripcion);
			pc.setCategoria(categoria);
			pc.setUnidad(unidad);
			pc.setIdCliente(idCliente);
			objetoRemoto.modificarProductoCliente(pc);
			return true;
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Modificar Producto Cliente");
		 }   
		 return false; 
	 }
	 public boolean bajaProductoCliente(Integer id) {
         try {        	 
        	 objetoRemoto.bajaProductoCliente(id);
        	 return true;
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Baja Producto Cliente");
         }   
         return false;
	 }
	 public DTO_ProductoCliente getProductoCliente(Integer id){
		 DTO_ProductoCliente d = null;
		 try {
			 d = objetoRemoto.getProductoCliente(id);
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Get Producto Cliente");
         }  
		 return d;
	 }
	 
	 //Listados
	 public List<DTO_Cliente> listarClientes() {
		 List<DTO_Cliente> c = null;
		 try {
			 c = objetoRemoto.listarClientes();
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Listar clientes");
		 }  
		 return c;
	 }
	 public List<DTO_FacturaCliente> listarFacturasClientePendientes() {
		 List<DTO_FacturaCliente> f = null;
		 try {
			 f = objetoRemoto.listarFacturasClientePendientes();
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Listar facturas clientes pendientes");
		 }  
		 return f;
	 }
	 public List<DTO_FacturaCliente> listarFacturasClientePendientes(Integer idCliente) {
		 List<DTO_FacturaCliente> f = null;
		 try {
			 f = objetoRemoto.listarFacturasClientePendientes(idCliente);
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Listar facturas clientes pendientes por cliente");
		 }  
		 return f;
	 } 
	 public List<DTO_FacturaCliente> listarFacturasCliente(Integer idCliente) {
		 List<DTO_FacturaCliente> f = null;
		 try {
			 f = objetoRemoto.listarFacturasCliente(idCliente);
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Listar facturas clientes");
		 }  
		 return f;
	 }
	 public List<DTO_ReciboPago> listarRecibos() {
		 List<DTO_ReciboPago> r = null;
		 try {
			 r = objetoRemoto.listarRecibos();
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Listar recibos");
		 }  
		 return r;
	 }
	 public List<DTO_ReciboPago> listarRecibos(Integer idCliente) {
		 List<DTO_ReciboPago> r = null;
		 try {
			 r = objetoRemoto.listarRecibos(idCliente);
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Listar recibos por cliente");
		 }  
		 return r;
	 }
	 public List<DTO_DireccionEntrega> listarDireccionEntrega(Integer idCliente) {
		 List<DTO_DireccionEntrega> d = null;
		 try {
			d = objetoRemoto.listarDireccionEntrega(idCliente);
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Listar direcciones de entregas por cliente");
		 }  
		 return d;
	 }
	 public List<DTO_ProductoCliente> listarProductoCliente(Integer idCliente) {
		 List<DTO_ProductoCliente> p = null;
		 try {
			p = objetoRemoto.listarProductoCliente(idCliente);
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Listar productos por cliente");
		 }  
		 return p;
	 }

	/**************************************************************************************************************************/
	/**Proveedor**/
	/**************************************************************************************************************************/
	//Proveedor
	 public boolean altaProveedor(String activo, String razonSocial, String cuit, String categoria, String direccion, String codigoPostal, String localidad, String provincia,
			 String pais, String email, String telefono, String tipo, String metodoPago, String especialidad, String tallerOficial) {
        try {        	 
       	 DTO_Proveedor proveedor = new DTO_Proveedor();
       	 proveedor.setActivo(activo);
       	 proveedor.setRazonSocial(razonSocial);
       	 proveedor.setCuit(cuit);
       	 proveedor.setCategoria(categoria);
       	 proveedor.setDireccion(direccion);
       	 proveedor.setCodigoPostal(codigoPostal);
       	 proveedor.setLocalidad(localidad);
       	 proveedor.setProvincia(provincia);
       	 proveedor.setPais(pais);
       	 proveedor.setEmail(email);
       	 proveedor.setTelefono(telefono);
       	 proveedor.setTipo(tipo);
       	 if (tipo.equals("T")){
       		 proveedor.setEspecialidad(especialidad);
       		 proveedor.setTallerOficial(tallerOficial);
       	 }
       	 proveedor.setMetodoPago(metodoPago);
       	 
       	 objetoRemoto.altaProveedor(proveedor);
       	 return true;
        } catch (RemoteException e) {
       	 System.out.println(e);
            System.out.println("Error Alta Proveedor");
        }   
        return false;
	 }
	
	 public boolean modificarProveedor(Integer id, String activo, String razonSocial, String cuit, String categoria, String direccion, String codigoPostal, String localidad, String provincia,
			 String pais, String email, String telefono, String tipo, String metodoPago, String especialidad, String tallerOficial) {
         try {        	 
        	 DTO_Proveedor proveedor = new DTO_Proveedor();
        	 proveedor.setId(id);
        	 proveedor.setActivo(activo);
        	 proveedor.setRazonSocial(razonSocial);
        	 proveedor.setCuit(cuit);
        	 proveedor.setCategoria(categoria);
        	 proveedor.setDireccion(direccion);
        	 proveedor.setCodigoPostal(codigoPostal);
        	 proveedor.setLocalidad(localidad);
        	 proveedor.setProvincia(provincia);
        	 proveedor.setPais(pais);
        	 proveedor.setEmail(email);
        	 proveedor.setTelefono(telefono);
        	 proveedor.setTipo(tipo);
        	 if (tipo.equals("T")){
        		 proveedor.setEspecialidad(especialidad);
        		 proveedor.setTallerOficial(tallerOficial);
        	 }
        	 proveedor.setMetodoPago(metodoPago);
        	 
        	 objetoRemoto.modificarProveedor(proveedor);
        	 return true;
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Modificar Proveedor");
         }   
         return false;
	 }
	 public boolean bajaProveedor(Integer id) {
         try {        	 
        	 objetoRemoto.bajaProveedor(id);
        	 return true;
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Baja Proveedor");
         }   
         return false;
	 }
	 public DTO_Proveedor buscarProveedor(String cuit){
		 DTO_Proveedor p = null;
		 try {
			 p = objetoRemoto.buscarProveedor(cuit);
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Alta Proveedor");
         }  
		 return p;
	 }
	 public DTO_Proveedor getProveedor(Integer id){
		 DTO_Proveedor p = null;
		 try {
			 p = objetoRemoto.getProveedor(id);
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Alta Proveedor");
         }  
		 return p;
	 }
	 
	//Factura Proveedor
	 public boolean altaFacturaProveedor(Integer idProveedor, String numero, Date fecha, Date vencimiento, float monto){
		 
		 try {
			 DTO_FacturaProveedor factura = new DTO_FacturaProveedor();
			 factura.setNumero(numero);
			 factura.setFecha(fecha);
			 factura.setVencimiento(vencimiento);
			 factura.setMontoTotal(monto);
			 factura.setMontoPendiente(monto);
			 factura.setIdProveedor(idProveedor);
        	 objetoRemoto.altaFacturaProveedor(factura);
        	 return true;
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Alta Factura Proveedor");
         }   
		 
         return false;
	 }
 	public boolean modificarFacturaProveedor(Integer id, Integer idProveedor, String numero, Date fecha, Date vencimiento, float monto){
		 
		 try {
			 DTO_FacturaProveedor factura = new DTO_FacturaProveedor();
			 factura.setId(id);
			 factura.setNumero(numero);
			 factura.setFecha(fecha);
			 factura.setVencimiento(vencimiento);
			 factura.setMontoTotal(monto);
			 factura.setMontoPendiente(monto);
			 factura.setIdProveedor(idProveedor);
        	 objetoRemoto.modificarFacturaProveedor(factura);
        	 return true;
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Modificar Factura Proveedor");
         }   
		 
         return false;
	 }
 	
 	public DTO_FacturaProveedor buscarFacturaProveedor(Integer id){
 		DTO_FacturaProveedor f = null;
		 try {
			 f = objetoRemoto.buscarFacturaProveedor(id);
        } catch (RemoteException e) {
       	 System.out.println(e);
            System.out.println("Error buscar Factura Proveedor");
        }  
		 return f;
	 }
 	
 	public boolean pagarFacturaProveedor(Integer id){
		 try {
			objetoRemoto.pagarFactura(id);
			return true;
        } catch (RemoteException e) {
       	 System.out.println(e);
            System.out.println("Error buscar Factura Proveedor");
        }  
		 return false;
	 }
 	//Servicio Seguridad
 	public boolean altaServicioSeguridad(Integer idProveedor, String descripcion, float tarifa) {
		try {
			DTO_ServicioSeguridad servicioSeguridad = new DTO_ServicioSeguridad();
			servicioSeguridad.setDescripcion(descripcion);
			servicioSeguridad.setTarifa(tarifa);
			servicioSeguridad.setIdProveedor(idProveedor);
        	objetoRemoto.altaServicioSeguridad(servicioSeguridad);
        	return true;
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Alta Servicio Seguridad");
         }   
		 
         return false;
	}
 	public boolean modificarServicioSeguridad(Integer id, Integer idProveedor, String descripcion, float tarifa) {
		try {
			DTO_ServicioSeguridad servicioSeguridad = new DTO_ServicioSeguridad();
			servicioSeguridad.setId(id);
			servicioSeguridad.setDescripcion(descripcion);
			servicioSeguridad.setTarifa(tarifa);
			servicioSeguridad.setIdProveedor(idProveedor);
        	objetoRemoto.modificarServicioSeguridad(servicioSeguridad);
        	return true;
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Modificar Servicio Seguridad");
         }   
		 
         return false;
	}
 	public boolean bajaServicioSeguridad(Integer id) {
        try {        	 
       	 objetoRemoto.bajaServicioSeguridad(id);
       	 return true;
        } catch (RemoteException e) {
       	 System.out.println(e);
            System.out.println("Error Baja Servicio Seguridad");
        }   
        return false;
	 }
 	public DTO_ServicioSeguridad buscarServicioSeguridad(Integer id){
 		DTO_ServicioSeguridad s = null;
		 try {
			 s = objetoRemoto.buscarServicioSeguridad(id);
        } catch (RemoteException e) {
       	 System.out.println(e);
            System.out.println("Error buscar Servicio Seguridad");
        }  
		 return s;
	 }
 	//Seguro
 	public boolean altaSeguro(Integer idProveedor, String tipoSeguro, String descripcion, float tarifa) {
		try {
			DTO_Seguro seguro = new DTO_Seguro();
			seguro.setTipoSeguro(tipoSeguro);
			seguro.setDescripcion(descripcion);
			seguro.setTarifa(tarifa);
			seguro.setIdProveedor(idProveedor);
        	objetoRemoto.altaSeguro(seguro);
        	return true;
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Alta Seguro");
         }   
		 
         return false;
	}
 	public boolean modificarSeguro(Integer id, Integer idProveedor, String tipoSeguro, String descripcion, float tarifa) {
		try {
			DTO_Seguro seguro = new DTO_Seguro();
			seguro.setId(id);
			seguro.setTipoSeguro(tipoSeguro);
			seguro.setDescripcion(descripcion);
			seguro.setTarifa(tarifa);
			seguro.setIdProveedor(idProveedor);
        	objetoRemoto.modificarSeguro(seguro);
        	return true;
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Modificar Seguro");
         }   
		 
         return false;
	}
 	public boolean bajaSeguro(Integer id) {
        try {        	 
       	 objetoRemoto.bajaSeguro(id);
       	 return true;
        } catch (RemoteException e) {
       	 System.out.println(e);
            System.out.println("Error Baja Seguro");
        }   
        return false;
	 }
 	public DTO_Seguro buscarSeguro(Integer id){
 		DTO_Seguro s = null;
		 try {
			 s = objetoRemoto.buscarSeguro(id);
        } catch (RemoteException e) {
       	 System.out.println(e);
            System.out.println("Error buscar Seguro");
        }  
		 return s;
	 }
 	//Precio Carrier
 	public boolean altaPrecioCarrier(String tipo, Integer idProveedor, Integer idDestino, String comentarios, String prioridad, float precioKMExtra, float tarifa) {
		try {
			DTO_PrecioCarrier precioCarrier = new DTO_PrecioCarrier();
			precioCarrier.setIdProveedor(idProveedor);
			precioCarrier.setIdDestino(idDestino);
			precioCarrier.setComentarios(comentarios);
			precioCarrier.setPrioridad(prioridad);
			precioCarrier.setPrecioKMExtra(precioKMExtra);
			precioCarrier.setTarifa(tarifa);
			precioCarrier.setIdProveedor(idProveedor);
			if (tipo.equals("N")){
				objetoRemoto.altaPrecioCarrierNacional(precioCarrier);
			} else {
				objetoRemoto.altaPrecioCarrierInternacional(precioCarrier);
			}
        	return true;
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Alta Precio Carrier");
         }   
         return false;
	} 
 	public boolean modificarPrecioCarrier(Integer id, String tipo, Integer idProveedor, Integer idDestino, String comentarios, String prioridad, float precioKMExtra, float tarifa) {
		try {
			DTO_PrecioCarrier precioCarrier = new DTO_PrecioCarrier();
			precioCarrier.setId(id);
			precioCarrier.setIdProveedor(idProveedor);
			precioCarrier.setIdDestino(idDestino);
			precioCarrier.setComentarios(comentarios);
			precioCarrier.setPrioridad(prioridad);
			precioCarrier.setPrecioKMExtra(precioKMExtra);
			precioCarrier.setTarifa(tarifa);
			precioCarrier.setIdProveedor(idProveedor);
			if (tipo.equals("N")){
				objetoRemoto.modificarPrecioCarrierNacional(precioCarrier);
			} else {
				objetoRemoto.modificarPrecioCarrierInternacional(precioCarrier);
			}
        	return true;
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error modificar Precio Carrier");
         }   
         return false;
	} 
	
 	public DTO_PrecioCarrier buscarPrecioCarrierNacional(Integer id){
 		DTO_PrecioCarrier p = null;
		 try {
			 p = objetoRemoto.buscarPrecioCarrierNacional(id);
        } catch (RemoteException e) {
       	 System.out.println(e);
            System.out.println("Error buscar Precio Carrier Nacional");
        }  
		 return p;
	 }
 	
	public DTO_PrecioCarrier buscarPrecioCarrierInternacional(Integer id){
 		DTO_PrecioCarrier p = null;
		 try {
			 p = objetoRemoto.buscarPrecioCarrierInternacional(id);
        } catch (RemoteException e) {
       	 System.out.println(e);
            System.out.println("Error buscar Precio Carrier Internacional");
        }  
		 return p;
	 }
 	
 	public List<DTO_Proveedor> listarProveedores() {
 		List<DTO_Proveedor> p = null;
		 try {
			 p = objetoRemoto.listarProveedores();
       } catch (RemoteException e) {
      	 System.out.println(e);
           System.out.println("Error Listar proveedores");
       }  
		 return p;
 	}
 	public List<DTO_Proveedor> listarTalleres() {
 		List<DTO_Proveedor> p = null;
		 try {
			 p = objetoRemoto.listarTalleres();
       } catch (RemoteException e) {
      	 System.out.println(e);
           System.out.println("Error Listar talleres");
       }  
		 return p;
 	}
 	public List<DTO_Proveedor> listarAseguradoras() {
 		List<DTO_Proveedor> p = null;
		 try {
			 p = objetoRemoto.listarAseguradoras();
       } catch (RemoteException e) {
      	 System.out.println(e);
           System.out.println("Error Listar aseguradoras");
       }  
		 return p;
 	}
	public List<DTO_Proveedor> listarEmpresasSeguridad() {
 		List<DTO_Proveedor> p = null;
		 try {
			 p = objetoRemoto.listarEmpresasSeguridad();
       } catch (RemoteException e) {
      	 System.out.println(e);
           System.out.println("Error Listar empresa de seguridad");
       }  
		 return p;
 	}
	public List<DTO_Proveedor> listarCarriers() {
 		List<DTO_Proveedor> p = null;
		 try {
			 p = objetoRemoto.listarCarriers();
       } catch (RemoteException e) {
      	 System.out.println(e);
           System.out.println("Error Listar carriers");
       }  
		 return p;
 	}
	
	public List<DTO_FacturaProveedor> listarFacturasProveedorPendientes() {
 		List<DTO_FacturaProveedor> f = null;
		 try {
			 f = objetoRemoto.listarFacturasProveedorPendientes();
       } catch (RemoteException e) {
      	 System.out.println(e);
           System.out.println("Error Listar factura proveedor");
       }  
		 return f;
 	}

	public List<DTO_FacturaProveedor> listarFacturasProveedor(Integer id) {
 		List<DTO_FacturaProveedor> f = null;
		 try {
			 f = objetoRemoto.listarFacturasProveedor(id);
       } catch (RemoteException e) {
      	 System.out.println(e);
           System.out.println("Error Listar factura proveedor");
       }  
		 return f;
 	}
	
	public List<DTO_FacturaProveedor> listarFacturasProveedorPendientes(Integer id) {
 		List<DTO_FacturaProveedor> f = null;
		 try {
			 f = objetoRemoto.listarFacturasProveedorPendientes(id);
       } catch (RemoteException e) {
      	 System.out.println(e);
           System.out.println("Error Listar factura proveedor pendientes");
       }  
		 return f;
 	}

	public List<DTO_ServicioSeguridad> listarServicioSeguridad(Integer id) {
 		List<DTO_ServicioSeguridad> s = null;
		 try {
			 s = objetoRemoto.listarServicioSeguridad(id);
       } catch (RemoteException e) {
      	 System.out.println(e);
           System.out.println("Error Listar listar servicios seguridad");
       }  
		 return s;
 	}
	
	public List<DTO_Seguro> listarSeguros(Integer id) {
 		List<DTO_Seguro> s = null;
		 try {
			 s = objetoRemoto.listarSeguros(id);
       } catch (RemoteException e) {
      	 System.out.println(e);
           System.out.println("Error Listar listar seguros");
       }  
		 return s;
 	}
	
	public List<DTO_PrecioCarrier> listarPrecioCarrier(Integer id) {
 		List<DTO_PrecioCarrier> s = null;
		 try {
			 s = objetoRemoto.listarPrecioCarrier(id);
       } catch (RemoteException e) {
      	 System.out.println(e);
           System.out.println("Error Listar precio carrier");
       }  
		 return s;
 	}
	
	public List<DTO_PrecioCarrier> listarPrecioCarrierDestino(Integer id) {
 		List<DTO_PrecioCarrier> s = null;
		 try {
			 s = objetoRemoto.listarPrecioCarrierDestino(id);
       } catch (RemoteException e) {
      	 System.out.println(e);
           System.out.println("Error Listar precio carrier destino");
       }  
		 return s;
 	}

	 public List<DTO_Destino> listarDestinoNacionalSucursal(Integer id){
		 try {
        	 return objetoRemoto.listarDestinoNacional(id);
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Listar Destino Nacional por Sucursal");
         }   
         return null;
	 }
	 
	 public List<DTO_Destino> listarDestinoInternacionalSucursal(Integer id){
		 try {
        	 return objetoRemoto.listarDestinoInternacional(id);
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Listar Destino Internacional por Sucursal");
         }   
         return null;
	 }
	 
	/**************************************************************************************************************************/
	/**Vehiculos**/
	/**************************************************************************************************************************/
	 //Alta Mantenimiento
	 public boolean altaPlanMantenimiento(String descripcion, float tolerancia, String comentarios){
		 try {
			DTO_PlanMantenimiento pm = new DTO_PlanMantenimiento();
			pm.setDescripcion(descripcion);
			pm.setTolerancia(tolerancia);
			pm.setComentarios(comentarios);
        	objetoRemoto.altaPlanMantenimiento(pm);
        	return true;
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Alta Plan mantenimiento");
         }   
         return false;
	 }
	 public boolean modificarPlanMantenimiento(Integer id, String descripcion, float tolerancia, String comentarios){
		 try {
			DTO_PlanMantenimiento pm = new DTO_PlanMantenimiento();
			pm.setId(id);
			pm.setDescripcion(descripcion);
			pm.setTolerancia(tolerancia);
			pm.setComentarios(comentarios);
        	objetoRemoto.modificarPlanMantenimiento(pm);
        	return true;
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Modificar Plan mantenimiento");
         }   
         return false;
	 }
	 public boolean bajaPlanMantenimiento(Integer id) {
	        try {        	 
	       	 objetoRemoto.bajaPlanMantenimiento(id);
	       	 return true;
	        } catch (RemoteException e) {
	       	 System.out.println(e);
	            System.out.println("Error Baja Plan mantenimiento");
	        }   
	        return false;
		 }
	 public DTO_PlanMantenimiento getPlanMantenimiento(Integer id){
		 DTO_PlanMantenimiento p = null;
		 try {
			 p = objetoRemoto.getPlanMantenimiento(id);
	    } catch (RemoteException e) {
	    	System.out.println(e);
	    	System.out.println("Error get Plan mantenimiento");
	    }  
			return p;
	}
	//Alta Mantenimiento
	 public boolean altaTareaMantenimientoKilometro(String tarea, float cantidadKM){
		 try {
			 DTO_TareasPorKilometro tm = new DTO_TareasPorKilometro();
			tm.setTarea(tarea);
			tm.setCantidadKilometros(cantidadKM);
			tm.setTipo("KM");
			objetoRemoto.altaTareaMantenimientoKilometro(tm);
			return true;
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Alta tarea mantenimiento kilometro");
		 }   
		 return false;
	 }
	 public boolean modificarTareaMantenimientoKilometro(Integer id, String tarea, float cantidadKM){
		 try {
			 DTO_TareasPorKilometro tm = new DTO_TareasPorKilometro();
			tm.setId(id);
			tm.setTarea(tarea);
			tm.setCantidadKilometros(cantidadKM);
			tm.setTipo("KM");
			objetoRemoto.altaTareaMantenimientoKilometro(tm);
			return true;
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Modificar tarea mantenimiento kilometro");
		 }   
		 return false;
	 }
	 public boolean bajaTareaMantenimientoKilometro(Integer id) {
	        try {        	 
	       	 objetoRemoto.bajaTareaMantenimientoKilometro(id);
	       	 return true;
	        } catch (RemoteException e) {
	       	 System.out.println(e);
	            System.out.println("Error Baja tarea mantenimiento kilometro");
	        }   
	        return false;
		 }
	 public DTO_TareasPorKilometro getTareaMantenimientoKilometro(Integer id){
		 DTO_TareasPorKilometro p = null;
		 try {
			 p = objetoRemoto.getTareaMantenimientoKilometro(id);
	    } catch (RemoteException e) {
	    	System.out.println(e);
	    	System.out.println("Error get tarea mantenimiento kilometroo");
	    }  
			return p;
	}
	 public boolean altaTareaMantenimientoTiempo(String tarea, float cantidadDias){
		 try {
			 DTO_TareasPorTiempo tm = new DTO_TareasPorTiempo();
			tm.setTarea(tarea);
			tm.setCantidadDias(cantidadDias);
			tm.setTipo("KM");
			objetoRemoto.altaTareaMantenimientoTiempo(tm);
			return true;
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Alta tarea mantenimiento Tiempo");
		 }   
		 return false;
	 }
	 public boolean modificarTareaMantenimientoTiempo(Integer id, String tarea, float cantidadDias){
		 try {
			 DTO_TareasPorTiempo tm = new DTO_TareasPorTiempo();
			tm.setId(id);
			tm.setTarea(tarea);
			tm.setCantidadDias(cantidadDias);
			tm.setTipo("TI");
			objetoRemoto.modificarTareaMantenimientoTiempo(tm);
			return true;
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Modificar tarea mantenimiento Tiempo");
		 }   
		 return false;
	 }
	 public boolean bajaTareaMantenimientoTiempo(Integer id) {
	        try {        	 
	       	 objetoRemoto.bajaTareaMantenimientoTiempo(id);
	       	 return true;
	        } catch (RemoteException e) {
	       	 System.out.println(e);
	            System.out.println("Error Baja tarea mantenimiento Tiempo");
	        }   
	        return false;
		 }
	 public DTO_TareasPorTiempo getTareaMantenimientoTiempo(Integer id){
		 DTO_TareasPorTiempo p = null;
		 try {
			 p = objetoRemoto.getTareaMantenimientoTiempo(id);
	    } catch (RemoteException e) {
	    	System.out.println(e);
	    	System.out.println("Error get tarea mantenimiento Tiempo");
	    }  
			return p;
	}
	//Vehiculo
	 public boolean altaVehiculo(String tipo, String patente,
				String marca, int modelo, float kilometros, float ancho,
				float alto, float largo, float peso, float tara, float volumen,
				float costoKM, Date fechaIngreso, Date ultimoMantenimiento,
				Date ultimoUso, Date vencimientoGarantia, Integer idSucursal,
				Integer idSucursalActual, float temperaturaMin,
				float temperaturaMax, Integer idPlan){
		 try {
			DTO_Vehiculo v = new DTO_Vehiculo();
			v.setTipo(tipo);
			v.setPatente(patente);
			v.setMarca(marca);
			v.setModelo(modelo);
			v.setKilometros(kilometros);
			v.setAncho(ancho);
			v.setAlto(alto);
			v.setLargo(largo);
			v.setPeso(peso);
			v.setTara(tara);
			v.setVolumen(volumen);
			v.setCostoKM(costoKM);
			v.setFechaIngreso(fechaIngreso);
			v.setUltimoMantenimiento(ultimoMantenimiento);
			v.setUltimoUso(ultimoUso);
			v.setVencimientoGarantia(vencimientoGarantia);
			v.setIdSucursal(idSucursal);
			v.setIdSucursalActual(idSucursalActual);
			v.setTemperaturaMin(temperaturaMin);
			v.setTemperaturaMax(temperaturaMax);
			v.setIdPlanMantenimiento(idPlan);
				
			objetoRemoto.altaVehiculo(v);
			return true;
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Alta vehiculo");
		 }   
		 return false;
	 }
	 public boolean modificarVehiculo(Integer id, String tipo, String patente,
				String marca, int modelo, float kilometros, float ancho,
				float alto, float largo, float peso, float tara, float volumen,
				float costoKM, Date fechaIngreso, Date ultimoMantenimiento,
				Date ultimoUso, Date vencimientoGarantia, Integer idSucursal,
				Integer idSucursalActual, float temperaturaMin,
				float temperaturaMax, Integer idPlan){
		 try {
			DTO_Vehiculo v = new DTO_Vehiculo();
			v.setId(id);
			v.setTipo(tipo);
			v.setPatente(patente);
			v.setMarca(marca);
			v.setModelo(modelo);
			v.setKilometros(kilometros);
			v.setAncho(ancho);
			v.setAlto(alto);
			v.setLargo(largo);
			v.setPeso(peso);
			v.setTara(tara);
			v.setVolumen(volumen);
			v.setCostoKM(costoKM);
			v.setFechaIngreso(fechaIngreso);
			v.setUltimoMantenimiento(ultimoMantenimiento);
			v.setUltimoUso(ultimoUso);
			v.setVencimientoGarantia(vencimientoGarantia);
			v.setIdSucursal(idSucursal);
			v.setIdSucursalActual(idSucursalActual);
			v.setTemperaturaMin(temperaturaMin);
			v.setTemperaturaMax(temperaturaMax);
			v.setIdPlanMantenimiento(idPlan);
				
			objetoRemoto.modificarVehiculo(v);
			return true;
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Modificar vehiculo");
		 }   
		 return false;
	 }
	 public boolean bajaVehiculo(Integer id) {
	        try {        	 
	       	 objetoRemoto.bajaVehiculo(id);
	       	 return true;
	        } catch (RemoteException e) {
	       	 System.out.println(e);
	            System.out.println("Error Baja vehiculo");
	        }   
	        return false;
		 }
	 public DTO_Vehiculo buscarVehiculo(String patente){
		 DTO_Vehiculo v = null;
		 try {
			 v = objetoRemoto.buscarVehiculo(patente);
	    } catch (RemoteException e) {
	    	System.out.println(e);
	    	System.out.println("Error buscar vehiculo por patente");
	    }  
			return v;
	}
	//Tarea Realizada
	 public boolean altaTareaMantenimientoRealizada(
				Integer idTareaMantenimiento, Date fecha, float cantidadKilometros,
				Integer idProveedor){
		 try {
			DTO_TareaMantenimientoRealizada tmr = new DTO_TareaMantenimientoRealizada();
			tmr.setIdTareaMantenimiento(idTareaMantenimiento);
			tmr.setFecha(fecha);
			tmr.setCantidadKilometros(cantidadKilometros);
			tmr.setIdProveedor(idProveedor);
				
			objetoRemoto.altaTareaMantenimientoRealizada(tmr);
			return true;
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Alta tarea realizada");
		 }   
		 return false;
	 }
	 
	 public boolean modificarTareaMantenimientoRealizada(Integer id,
				Integer idTareaMantenimiento, Date fecha, float cantidadKilometros,
				Integer idProveedor){
		 try {
			DTO_TareaMantenimientoRealizada tmr = new DTO_TareaMantenimientoRealizada();
			tmr.setId(id);
			tmr.setIdTareaMantenimiento(idTareaMantenimiento);
			tmr.setFecha(fecha);
			tmr.setCantidadKilometros(cantidadKilometros);
			tmr.setIdProveedor(idProveedor);
				
			objetoRemoto.modificarTareaMantenimientoRealizada(tmr);
			return true;
		 } catch (RemoteException e) {
			 System.out.println(e);
			 System.out.println("Error Alta tarea realizada");
		 }   
		 return false;
	 }
	 public DTO_TareaMantenimientoRealizada getTareaMantenimientoRealizada(Integer id){
		 DTO_TareaMantenimientoRealizada t = null;
		 try {
			 t = objetoRemoto.getTareaMantenimientoRealizada(id);
	    } catch (RemoteException e) {
	    	System.out.println(e);
	    	System.out.println("Error get tarea realizada");
	    }  
			return t;
	} 
	 
	 public List<DTO_PlanMantenimiento> listarPlanMantenimiento(){
		 try {
        	 return objetoRemoto.listarPlanMantenimiento();
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Listar plan mantenimientol");
         }   
         return null;
	 }
	 public List<DTO_TareaMantenimiento> listarTareasMantenimiento(Integer idPlanMantenimiento){
		 try {
        	 return objetoRemoto.listarTareasMantenimiento(idPlanMantenimiento);
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Listar plan mantenimientol");
         }   
         return null;
	 }
	 public List<DTO_Vehiculo> listarVehiculos(){
		 try {
        	 return objetoRemoto.listarVehiculos();
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Listar vehiculos");
         }   
         return null;
	 }
	 public List<DTO_Vehiculo> listarVehiculos(Integer idSucursal){
		 try {
        	 return objetoRemoto.listarVehiculos(idSucursal);
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Listar vehiculos");
         }   
         return null;
	 }
	 public List<DTO_Vehiculo> listarVehiculosMantenimiento(){
		 try {
        	 return objetoRemoto.listarVehiculosMantenimiento();
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Listar vehiculos");
         }   
         return null;
	 }
	 public List<DTO_Vehiculo> listarVehiculosMantenimiento(Integer idSucursal){
		 try {
        	 return objetoRemoto.listarVehiculosMantenimiento(idSucursal);
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Listar vehiculos");
         }   
         return null;
	 }
	 public List<DTO_TareaMantenimientoRealizada> listarTareaMantenimientoRealizada(Integer idVehiculo){
		 try {
        	 return objetoRemoto.listarTareaMantenimientoRealizada(idVehiculo);
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Listar tarea realizada vehiculo");
         }   
         return null;
	 }
	 
	 public List<DTO_TareaMantenimientoRealizada> listarTareaMantenimientoRealizadaProveedor(Integer idProveedor){
		 try {
        	 return objetoRemoto.listarTareaMantenimientoRealizadaProveedor(idProveedor);
         } catch (RemoteException e) {
        	 System.out.println(e);
             System.out.println("Error Listar tarea realizada proveedor");
         }   
         return null;
	 }
}
